Skip to content

Conversation

@Ikar-Rahl
Copy link

Proposed Workflow ("Editable Mode")

I propose a formal "Editable" workflow integrated into Manifest Mode.

This is an ongoing draft of my initial experimentations and is not (yet) a functional proposal.

1. Setup

I am working on MyProj defined by vcpkg.json.

2. Materialization

I signal to vcpkg that zlib should be editable (via a command, environment variable, or configuration).

Expected outcome:

  • First, vcpkg automatically resolves the correct version of zlib based on the current manifest, fetches the source (preferably via git clone to preserve history, or source extraction), and places it in a local user-writable directory (e.g., ./vcpkg_edits/zlib).
  • Then, vcpkg automatically treats this new local directory as the source for the zlib port, effectively creating a temporary local overlay.

3. Iteration

  1. I modify the source in ./vcpkg_edits/zlib.
  2. I run the standard build command for MyProj (e.g., cmake --build .).

Crucial Change (The "Dirty Build"):

  • For the Port: Vcpkg detects this port is currently "Editable". Instead of the standard behavior (hash check -> clean -> rebuild -> repackage), it performs a Dirty Build (Incremental). It invokes the underlying build system (CMake, Ninja, Make) directly on the existing build artifacts in the editable directory.
  • For the Consumer: Simultaneously, the ABI hash of the editable port is updated (via a "dirty bit" or salted hash). This signals to the consumer (MyProj) that a dependency has changed, triggering a non-standard incremental build/re-link of the consumer project against the updated binary.

4. Completion

I validate my changes. I can then commit the changes (if git history was preserved or added) or generate a patch. I disable the editable state, and vcpkg returns to strict manifest compliance.

The Golden Rule: "Whatever happens in editable mode, stays in editable mode." No impact on CI, registry, shared code. Local only.

@Ikar-Rahl Ikar-Rahl changed the title Initial draft for editable in manifest mode Editable in manifest mode Nov 25, 2025
@Ikar-Rahl Ikar-Rahl marked this pull request as draft November 25, 2025 15:36
@Ikar-Rahl
Copy link
Author

@microsoft-github-policy-service agree company="Adobe"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant